import sys

import numpy as np

import common.utils
from tools import *

pd.set_option('display.unicode.east_asian_width', True)


def get_作业_成绩(作业='作业1') -> DataFrame:
    file_path = f"{BASE_PATH_微服务}\\上机资料\\作业\\成绩附件-{作业}.xlsx"
    if not os.path.exists(file_path):
        print(f"错误：文件不存在 - {file_path}")
        sys.exit(1)  # 非零退出码表示错误退出

    try:
        # 注意：索引从0开始，所以第1列索引0
        selected_df = pd.read_excel(
            file_path,
            usecols=['学号', '最终成绩'],
            # dtype={'学号': str, '最终成绩': str},
            header=0,  # 第一行是标题行
        )
        selected_df['学号'] = pd.to_numeric(selected_df['学号'], errors='coerce').fillna(0)
        selected_df['最终成绩'] = pd.to_numeric(selected_df['最终成绩'], errors='coerce').fillna(0)
        # 显示读取的数据
        print("\n读取的数据:")
        print(selected_df)
    except Exception as e:
        print(f"❌ 读取失败: {str(e)}")
        raise

    df_学生信息 = get_学生_信息()
    # 合并数据
    merged_data = merge_student_homework(
        df_stu_info=df_学生信息,
        df_homework=selected_df,
        output_path=f"{BASE_PATH_微服务}/上机资料/作业/成绩附件-{作业}-新.xlsx",
    )

    print("\n合并后的数据:")
    print(merged_data)

    return selected_df


def copy_作业(file='作业1'):
    df_学生信息 = get_学生_信息()
    se_学号 = df_学生信息['学号'].astype(int)
    se_姓名 = df_学生信息['姓名'].astype(str)

    # 最佳实践：简洁高效
    for 学号, 姓名 in zip(se_学号, se_姓名):
        from_file_path = f"{BASE_PATH_微服务}/上机资料/作业/{file}/{file}-模板.docx"
        to_file_path = f"{BASE_PATH_微服务}/上机资料/作业/{file}/{学号}-{姓名}.docx"
        common.utils.copy_docx(from_file_path, to_file_path)

def copy_作业_all():
    # copy_作业('作业1')
    copy_作业('作业2')
    copy_作业('作业3')
    copy_作业('作业4')
    copy_作业('作业5')

def get_作业_成绩_all():
    pass
"""
    # df_学生_信息 = get_学生_信息()
    # df_作业1 = get_作业_成绩('作业1')
    # df_作业2 = get_作业_成绩('作业2')
    # df_作业3 = get_作业_成绩('作业3')
    # df_作业4 = get_作业_成绩('作业4')
    # df_作业5 = get_作业_成绩('作业5')

    # 所有作业列表
    # all_homeworks = [df_作业1, df_作业2, df_作业3, df_作业4, df_作业5]

    # 合并所有作业
    # merged_data = merge_student_homeworks(
    #     df_stu_info=df_学生_信息,
    #     homework_dfs=all_homeworks,
    #     output_path=f"{BASE_PATH_微服务}/上机资料/作业/作业成绩_汇总.xlsx",
    #     fill_value=0,  # 用-1表示缺失成绩
    #     validate_names=True
    # )
"""

# 使用示例
if __name__ == "__main__":
    copy_作业_all()

